有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在spring中对拦截器的使用

情况就是这样:

我为什么要使用拦截器

我想写一个模块来存储服务器上所有请求的数据。这些数据将很好地帮助我进行数据可视化

我目前如何使用

@Component
public class MyCustomInterceptor extends HandlerInterceptorAdapter{         
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception
    {
        System.out.println("In Interceptor");       
        return true;
    }       
    public void postHandle(
            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
            throws Exception {
        System.out.println("In Post Handler");
    }       
    public void afterCompletion(
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("After completion");
    }           
}

我正在注册拦截器如下

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="demo.mycustom")
public class MyInterceptorConfig extends WebMvcConfigurerAdapter{

    @Autowired
    MyCustomInterceptor obj;

    @Override
    public void addInterceptors(InterceptorRegistry registry) { 
            registry.addInterceptor(obj);
    }       
}

现在的挑战是

当我尝试登录“localhost:8096/myApp/#/login”时,这会返回404页未找到。只有当我添加拦截器配置时,才会观察到这一点。虽然我认为这是必要的,因为我必须告诉我的应用程序,这是我想要注册的拦截器

这里能做什么

观察结果:

当我调试并查看preHandle内部时,有趣的一点是“handler”参数给了我org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml,而当我正常使用应用程序时(没有拦截器),我得到的是org.springframework.web.servlet.mvc.ParameterizableViewController@1bff7859

这转移了我的注意力,在拦截器配置中添加了AddViewController。但我不知道如何添加它们以及添加什么。我尝试为“/”和“/登录”添加一个视图控制器,并相应地使用视图名称。但不知怎么的,它不起作用

有人能在这方面启发我吗。我已经浏览了stackoverflow上的几乎所有链接,但找不到任何内容,可能是我无法满足我的要求


共 (1) 个答案

  1. # 1 楼答案

    通过删除EnableWebMvc注释可以解决这个问题。我不知道它是干什么的;)

    我在阅读时错过了下面这篇文章

    enter image description here

    我从来都不想完全控制spring MVC。我只是想实现拦截器